LOADING...

loading

TypeScript类(class)

抽象类

抽象类做为其它派生类的基类使用,它们一般不会直接被实例化,抽象类可以包含成员的实现细节。

abstract 关键字是用于定义抽象类和在抽象类内部定义抽象方法。

比如我们创建一个 Animal 抽象类:

abstract class Animal {
    abstract makeSound(): void;
    move(): void {
        console.log('roaming the earch...');
    }
}

我在实例化此抽象类会报错:

图片

我们不能直接实例化抽象类,通常需要我们创建子类继承基类,然后可以实例化子类。

class Pig extends Animal {
 
    makeSound() {
        console.log('heng heng')
    }
}
 
const pig = new Pig()
 
pig.makeSound()
pig.move()

访问限定符

传统面向对象语言通常都有访问限定符,TypeScript 中有三类访问限定符,分别是: publicprivateprotected

public

在 TypeScript 的类中,成员都默认为 public, 被此限定符修饰的成员是可以被外部访问。

class Car {
    public run() {
        console.log('启动...')
    }
}
 
const car = new Car()
 
car.run()
private

当成员被设置为 private 之后, 被此限定符修饰的成员是只可以被类的内部访问。

图片
protected

当成员被设置为 protected 之后, 被此限定符修饰的成员是只可以被类的内部以及类的子类访问。

class Car {
    protected run() {
        console.log('启动...')
    }
}
 
class GTR extends Car {
    init() {
        this.run()
    }
}
 
const car = new Car()
const gtr = new GTR()
 
car.run() // [ts] 属性“run”受保护,只能在类“Car”及其子类中访问。
gtr.init() // 启动...
gtr.run() // [ts] 属性“run”受保护,只能在类“Car”及其子类中访问。